package com.xyh.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xyh.system.model.Role;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author kyle
 * @since 2021-01-05
 */
public interface IRoleService extends IService<Role> {
    /**
     * 分页获取所有觉得列表
     *
     * @param page      当前页码
     * @param limit     每页显示数量
     * @param roleQuery 查询条件
     * @return 分页的角色集合
     */
    Page<Role> selectAllByQuery(Integer page, Integer limit, Role roleQuery);


    /**
     * 根据角色id查询该角色拥有的所有menu id
     *
     * @param roleId 角色id
     * @return 该角色拥有的所有menu id 的数组
     */
    Integer[] getMenusByRoleId(Integer roleId);

    /**
     * 根据角色id查询该角色拥有的所有Operator id
     *
     * @param roleId 角色id
     * @return 该角色拥有的所有Operator id 的数组
     */
    Integer[] getOperatorsByRoleId(Integer roleId);

    /**
     * 为角色授予相应的菜单权限(先删除所有与角色id相关的菜单权限，然后再根据传入的menuIds数组重新分配菜单权限)
     *
     * @param roleId  角色id
     * @param menuIds 菜单id数组
     */
    void grantMenu(Integer roleId, Integer[] menuIds);

    /**
     * 为角色分配操作权限(先删除所有与角色id相关的操作权限，然后再根据传入的operatorIds数组重新分配操作权限)
     *
     * @param roleId      角色id
     * @param operatorIds 操作id数组
     */
    void grantOperator(Integer roleId, Integer[] operatorIds);
}
